package com.ruoyi.web.middleware.influxdb;

import com.ruoyi.web.utils.influxdb.DeviceAggreDataParam;
import com.ruoyi.web.utils.influxdb.DeviceData;
import com.ruoyi.web.utils.influxdb.DeviceHistoryDataParam;
import com.ruoyi.web.utils.influxdb.FluxRecord;

import java.util.List;

/**
 * @desc  InfluxDB查询接口
 * @author fwx 2024/2/3 13:53
 **/
public interface Influxdb2Service {

    /**
     * @desc  查询最新的历史数据 - 传感器数据 - map类型
     * @author fwx 2023/11/4 10:27
     **/
    DeviceData getLastMonitorDataMap(String deviceId , Long productId);

    /**
     * @desc  查询最新的历史数据 - 传感器数据
     * @author fwx
     * @date  2023/9/20 10:58
     **/
    FluxRecord getLastMonitorData(String deviceId , Long productId);

    /**
     * @desc  数据开窗 - 单因子
     * @author fwx 2024/2/27 16:33
     **/
    List<DeviceData> aggregateWindow(DeviceAggreDataParam param);

    /**
     * @desc  得到单因子的历史数据
     * @author fwx 2024/3/1 15:35
     **/
    List<DeviceData> getFactorHistoryData(DeviceAggreDataParam param);

    /**
     * @desc  得到基础的历史数据
     * @author fwx 2024/3/21 14:51
     **/
    List<DeviceData> getBaseHistoryData(DeviceAggreDataParam param);

    /**
     * @desc  查询某一个因子的  一条聚合数据数据
     * @author fwx 2024/2/23 16:25
     **/
    DeviceData getMaxMonitorData(DeviceAggreDataParam param);

    /**
     * @desc  查询传感器数据的历史数据 行转列
     * @author fwx
     * @date  2023/9/15 16:58
     **/
    List<FluxRecord> getMonitorDataByTime(DeviceHistoryDataParam param);

    /**
     * @desc  查询传感器数据的历史数据
     * @author fwx 2024/2/4 14:15
     **/
    List<DeviceData> getMonitorDataMapByTime(DeviceHistoryDataParam param);

}
